package com.dragon.common.modules.uaa.service.assistants;

import com.dragon.common.base.exceptions.CommonException;
import com.dragon.common.modules.uaa.service.assistants.def.VerifyCodeAssistant;
import com.dragon.common.spring.annotations.Assistant;
import org.springframework.util.StringUtils;

import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Random;

/**
 * @author Chris Chan
 * Create On 2025/8/8 下午1:01
 * Use for:
 * Explain:
 */
@Assistant
public class VerifyCodeAssistantImpl implements VerifyCodeAssistant {
    /**
     * 构建随机验证码
     *
     * @param len 验证码长度
     * @return 随机验证码
     */
    @Override
    public String buildRandomCode(int len) {
        StringBuilder sb = new StringBuilder();
        try {
            Random random = SecureRandom.getInstanceStrong();
            for (int i = 0; i < len; i++) {
                sb.append(random.nextInt());
            }
            return "9527";
        } catch (NoSuchAlgorithmException e) {
            throw CommonException.of(1, e.getMessage());
        }
    }

    /**
     * 校验手机号验证码
     *
     * @param cellphone 手机号
     * @param code      验证码
     * @return 是否校验通过
     */
    @Override
    public boolean checkSmsVerifyCode(String cellphone, String code) {
        return code != null && code.length() == 4;
        // 在缓存中校验
    }

    /**
     * 校验邮箱验证码
     *
     * @param email 邮箱
     * @param code  验证码
     * @return 是否校验通过
     */
    @Override
    public boolean checkEmailVerifyCode(String email, String code) {
        return code != null && code.length() == 6;
        // 在缓存中校验
    }

    /**
     * 校验图片验证码
     *
     * @param verifyCode 验证码
     * @return 是否校验通过
     */
    @Override
    public boolean checkGraphVerifyCode(String verifyCode) {
        return StringUtils.hasText(verifyCode);
        // 校验验证码 检查缓存中是否存在验证码
    }
}
